package com.sigmatrix.h5.dao;

import java.util.List;

import com.sigmatrix.h5.entity.MultistageLevelQRCode;
import com.sigmatrix.h5.exception.DaoException;
import com.sigmatrix.sc.mongo.common.dao.MongoDao;

/**
 * 
 *@ClassName: MultistageLevelQrCodeDao
 *@Description: 多级码表
 *@author MH
 *@date 2017年9月22日 上午9:48:54
 */
public interface MultistageLevelQrCodeDao extends MongoDao<MultistageLevelQRCode>{

	/**
	 *@Title: findMultistageLevelQRCodeByQRCode
	 *@Description: 根据码和企业code查询唯一多级码
	 *@return MultistageLevelQRCode
	 *@author youjun
	 *@date 2017年6月29日 下午9:22:11
	 *@param enterpriseCode
	 *@param qRCode
	 *@return
	 */
	MultistageLevelQRCode findMultistageLevelQRCodeByQRCode(String enterpriseCode, String qRCode) throws DaoException;

	/**
	 *@Title: findMultistageLevelQRCodeByQRCodeAndLevel
	 *@Description: 根据码、码级别和企业code查询唯一多级码
	 *@return MultistageLevelQRCode
	 *@author youjun
	 *@date 2017年8月6日 下午4:00:12
	 *@param enterpriseCode
	 *@param qRCode
	 *@param qRCodeLevel
	 *@return
	 *@throws DaoException
	 */
	MultistageLevelQRCode findMultistageLevelQRCodeByQRCodeAndLevel(String enterpriseCode, String qRCode,
			Integer qRCodeLevel) throws DaoException;

	/**
	 *@Title: findMultistageLevelQRCodeByFriendlyCode
	 *@Description: TODO()
	 *@return MultistageLevelQRCode
	 *@author youjun
	 *@date 2017年8月8日 下午6:16:40
	 *@param enterpriseCode
	 *@param friendlyCode
	 *@return
	 *@throws DaoException
	 */
	MultistageLevelQRCode findMultistageLevelQRCodeByFriendlyCode(String enterpriseCode, String friendlyCode)
			throws DaoException;

	/**
	 *@Title: findMultistageLevelQRCodeByFriendlyCodeAndLevel
	 *@Description: TODO()
	 *@return MultistageLevelQRCode
	 *@author youjun
	 *@date 2017年8月8日 下午6:16:49
	 *@param enterpriseCode
	 *@param friendlyCode
	 *@param qRCodeLevel
	 *@return
	 *@throws DaoException
	 */
	MultistageLevelQRCode findMultistageLevelQRCodeByFriendlyCodeAndLevel(String enterpriseCode, String friendlyCode,
			Integer qRCodeLevel) throws DaoException;

	/**
	 *@Title: findMultistageLevelQRCodeBySeqNumAndLevel
	 *@Description: TODO()
	 *@return MultistageLevelQRCode
	 *@author youjun
	 *@date 2017年8月10日 下午8:11:40
	 *@param enterpriseCode
	 *@param code
	 *@param qRCodeLevel
	 *@return
	 * @throws DaoException 
	 */
	MultistageLevelQRCode findMultistageLevelQRCodeBySeqNumAndLevel(String enterpriseCode, String code,
			Integer qRCodeLevel) throws DaoException;

	/**
	 *@Title: findMultistageLevelQRCodeBySeqNum
	 *@Description: TODO()
	 *@return MultistageLevelQRCode
	 *@author youjun
	 *@date 2017年8月10日 下午8:11:49
	 *@param enterpriseCode
	 *@param code
	 *@return
	 * @throws DaoException 
	 */
	MultistageLevelQRCode findMultistageLevelQRCodeBySeqNum(String enterpriseCode, String code) throws DaoException;

	/**
	 *@Title: updateOne
	 *@Description: TODO()
	 *@return void
	 *@author youjun
	 *@date 2017年8月14日 上午10:37:54
	 *@param item
	 */
	void updateOne(MultistageLevelQRCode item) throws DaoException;

	/**
	 *@Title: batchSplitOrFillParentCode
	 *@Description: 批量拆除或填充上级码关系
	 *@return void
	 *@author youjun
	 *@date 2017年8月19日 上午11:27:57
	 *@param enterpriseCode 企业code
	 *@param packContentList 批量操作的码
	 *@param parentCode 上级码
	 *@throws DaoException
	 */
	void batchSplitOrFillParentCode(String enterpriseCode, List<String> packContentList, String parentCode) throws DaoException;

	/**
	 *@Title: findMultistageLevelQRCodeByCondition
	 *@Description: TODO()
	 *@return List<MultistageLevelQRCode>
	 *@author youjun
	 *@date 2017年8月21日 下午1:37:09
	 *@param multistageLevelQRCodeCondition
	 *@return
	 */
	List<MultistageLevelQRCode> findMultistageLevelQRCodeByCondition(
			MultistageLevelQRCode multistageLevelQRCodeCondition) throws DaoException;

	/**
	 *@Title: batchUpdateByPackContentList
	 *@Description: 根据码集合,批量更新码为该集合中的码相关信息
	 *@return void
	 *@author youjun
	 *@date 2017年8月22日 下午3:40:15
	 *@param item
	 *@param packContentList
	 *@throws DaoException
	 */
	void batchUpdateByPackContentList(MultistageLevelQRCode item, List<String> packContentList)
			throws DaoException;

	
}
